C++,使用Qt设计一个登录窗口

您所在的位置:网站首页 procedural objects窗口怎么关 C++,使用Qt设计一个登录窗口

C++,使用Qt设计一个登录窗口

2023-09-22 13:03| 来源: 网络整理| 查看: 265

要求如下:

1、给窗体改变名称并设置窗口图标、尺寸固定 2、中间放log图 3、用户名和密码使用图片完成 4、账户用明文模式,密码用密文模式 5、点击登录后,将界面上的用户名和“admin”比较,密码和“123456”比较,如果匹配成功,则输出登录成功,如果匹配失败,则输出“账户密码不匹配”,并清空密码框(clear) 6、点击取消后,关闭整个界面 追加:

        点击登录按钮后,判断账号和密码是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。

        如果账号和密码匹配,则弹出信息对话框,给出提示信息为“登录成功”,给出一个按钮ok,点击ok后,关闭整个登录界面,跳转到其他界面

        点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录

要求:对象版和静态成员函数版至少各实现一个

 代码:

头文件:

#ifndef MYWND_H #define MYWND_H #include #include #include #include #include #include QT_BEGIN_NAMESPACE namespace Ui { class MyWnd; } QT_END_NAMESPACE class MyWnd : public QWidget { Q_OBJECT public slots: void userLogin(); void userExit(); signals: void mysignals(QString e); public: MyWnd(QWidget *parent = nullptr); ~MyWnd(); private: Ui::MyWnd *ui; }; #endif // MYWND_H

第二个窗口:

#ifndef NEWWINDOW_H #define NEWWINDOW_H #include #include namespace Ui { class NewWindow; } class NewWindow : public QWidget { Q_OBJECT public: void newSlot(QString e); public: explicit NewWindow(QWidget *parent = nullptr); ~NewWindow(); private: Ui::NewWindow *ui; }; #endif // NEWWINDOW_H

main函数:

#include "mywnd.h" #include "newwindow.h" #include int main(int argc, char *argv[]) { QApplication a(argc, argv); MyWnd w; w.show(); NewWindow f; //将w界面自定义信号函数,与f界面的槽函数进行链接 QObject::connect(&w, &MyWnd::mysignals, &f, &NewWindow::newSlot); //使用qDebug打印数据 return a.exec(); }

功能代码:

#include "mywnd.h" #include "ui_mywnd.h" MyWnd::MyWnd(QWidget *parent) : QWidget(parent) , ui(new Ui::MyWnd) { ui->setupUi(this); //设置固定长度 this->setFixedSize(QSize(540,410)); //设置窗口标题 this->setWindowTitle("登录"); //设置窗口图标 this->setWindowIcon(QIcon(":/logo/login.png")); //设置背景色 this->setStyleSheet("background-color:white"); //设置logo QLabel *imgLabel = ui->logo; imgLabel->setPixmap(QPixmap(":/logo/mid.png")); imgLabel->setScaledContents(true); QLabel *account_logo = ui->account_logo; account_logo->setPixmap(QPixmap(":/logo/account.png")); account_logo->setScaledContents(true); QLabel *passwd_logo = ui->password_logo; passwd_logo->setPixmap(QPixmap(":/logo/passwd.png")); passwd_logo->setScaledContents(true); //账号边框 QLineEdit *account = ui->account; account->setStyleSheet("border-top:0px;border-bottom:1px solid;border-left:0px;border-right:0px;"); account->setPlaceholderText("用户名"); //密码边框 QLineEdit *passwd = ui->password; passwd->setStyleSheet("border-top:0px;border-bottom:1px solid;border-left:0px;border-right:0px;"); passwd->setEchoMode(QLineEdit::Password); passwd->setPlaceholderText("密码"); //登录边框 QPushButton *login = ui->logon; login->setStyleSheet("border-radius:5px;background-color:#4d85ff;color:white;"); //取消边框 QPushButton *cancel = ui->cancel; cancel->setStyleSheet("border-radius:5px;background-color:#4d85ff;color:white;"); //登录事件 connect(ui->logon, &QPushButton::clicked, this, &MyWnd::userLogin); //退出事件 connect(ui->cancel, &QPushButton::clicked, this, &MyWnd::userExit); //信号 //connect(this, &MyWnd::mysignals, [](QString e){}); } MyWnd::~MyWnd() { delete ui; } void MyWnd::userLogin(){ QString account = ui->account->text(); QString password = ui->password->text(); if(account == "admin" && password == "123456"){ qDebug() close(); emit mysignals("hello world"); } } else{ qDebug() password->clear(); } else if(res == QMessageBox::Cancel){ this->close(); } } } void MyWnd::userExit(){ QMessageBox box3(QMessageBox::Warning, "退出", "要退出吗?", QMessageBox::Yes | QMessageBox::No); int res = box3.exec(); if(res == QMessageBox::Yes){ this->close(); } else if(res == QMessageBox::No){ ui->account->clear(); ui->password->clear(); } }

第二个:  

#include "newwindow.h" #include "ui_newwindow.h" NewWindow::NewWindow(QWidget *parent) : QWidget(parent), ui(new Ui::NewWindow) { ui->setupUi(this); } NewWindow::~NewWindow() { delete ui; } void NewWindow::newSlot(QString e) { qDebug() show(); }

ui文件:

MyWnd 0 0 540 410 MyWnd 0 0 540 160 Adobe Devanagari 20 background-color: rgb(85, 255, 127); 120 210 30 30 Adobe Devanagari 18 120 260 30 30 Adobe Devanagari 18 150 210 265 30 150 260 265 30 QLineEdit::Password 120 340 145 45 18 登录 270 340 145 45 18 取消

第二个:

NewWindow 0 0 400 300 Form 80 80 241 101 Mongolian Baiti 18 50 false false color: rgb(255, 0, 0); background-color: rgb(0, 255, 0); font: 18pt ;Mongolian Baiti;; 欢迎来到我的世界

结果如下:

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3